package be.khl.kevinvranken.breekuit.entiteiten.upgrades;

import be.khl.kevinvranken.breekuit.entiteiten.*;
import be.khl.kevinvranken.breekuit.Spel;

/**
 *
 * @author Kevin
 */
public abstract class Upgrade extends Entiteit {

    protected Spel spel;
    private boolean alGeraakt = false;

    public Upgrade(Spel spel, String ref, Blok blok) {
        super(ref, (int)(blok.getX()+blok.getBreedte()/2), (int)(blok.getY()+blok.getHoogte()));
        this.spel = spel;
        dx = 0; //we vallen recht naar beneden
        dy = 100;
    }

    public abstract void doeUpgrade();

    @Override
    public void move(long delta) {
        super.move(delta);

        if (y < 10) {
            setVerticalMovement(getVerticalMovement() * -1);
        }

        if (x < 10 || x > 750) {
            setHorizontalMovement(getHorizontalMovement() * -1);
        }

        // Als we van het scherm verdwijnen, zijn we ribbedebie
        if (y < -100 || y > 800) {
            spel.removeEntity(this);
        }
    }

    @Override
    public void collidedWith(Entiteit entiteit) {
        if (entiteit instanceof Paddle && !alGeraakt) {
            alGeraakt= true;
            doeUpgrade();
            spel.removeEntity(this);
        }
    }
}
